壹月 贰月 叁月 里逛 U
群/水犇犇学到的一些有趣的知识。
周贰 
一个式子 
g ( n ) = ∏ d ∣ n f ( d )   ⟺   f ( n ) = ∏ d ∣ n g ( n d ) μ ( d ) 
g(n) = \prod_{d|n}f(d)\ \Longleftrightarrow \ f(n)=\prod_{d|n}g(\frac{n}{d})^{\mu(d)}
 g ( n ) = d ∣ n ∏  f ( d )   ⟺   f ( n ) = d ∣ n ∏  g ( d n  ) μ ( d ) 
取完
ln  \ln ln  
就是标准的狄利克雷卷积形式,莫比乌斯反演后 exp
即可,感觉挺有意思/CY.
周叁 
exCRT 优化 
exCRT 的一种姿势,推了推式子,换了一种更好背的式子。
{ x ≡ a 1 ( m o d p 1 ) x ≡ a 2 ( m o d p 2 ) 
\begin{cases}
x \equiv a_1\pmod{p_1}\\\\
x \equiv a_2\pmod{p_2}
\end{cases}
 ⎩ ⎨ ⎧  x ≡ a 1  ( mod p 1  ) x ≡ a 2  ( mod p 2  )   
考虑合并以上方程:
exgcd(p1, p2, t1, t2)
( a 2 − a 1 ) ∣ ( p 1 , p 2 ) (a_2-a_1)|(p_1, p_2) ( a 2  − a 1  ) ∣ ( p 1  , p 2  )  
有解
x ≡ a 1 + t 1 ( a 2 − a 1 ) ( p 1 , p 2 ) × p 1 ( m o d [ p 1 , p 2 ] ) 
x \equiv a_1 + \frac{t_1(a_2 - a_1)}{(p_1, p_2)}\times p_1 \pmod{[p1, p2]}
 x ≡ a 1  + ( p 1  , p 2  ) t 1  ( a 2  − a 1  )  × p 1  ( mod [ p 1 , p 2 ]) 
应用 
快速乘法 
inline  ULL mul( ULL a,  ULL b,  ULL MOD){  // unsigned long long    
     LL R =  ( LL) a* b -  ( LL)(( ULL)(( long  double ) a *  b /  MOD)  *  MOD);  
     if ( R <  0 )  R +=  MOD;  
     if ( R >  MOD)  R -=  MOD;  
     return  R;  
}  
// 只关心两个答案的差值,这个差值一定小于 unsigned long long 的最大值, 所以在哪个剩余系下都不重要,不管差值是什么都能还原出原始数值。   
卡特兰数 
单独成文 
三元环与四元环计数 
黄队长博客 
一类维护两个有影响序列的线段树 
问题形如,考虑维护两个序列
A , B A, B A , B  
支持对
A A A  
做某些修改(区间加、区间乘等),还要求支持将
A A A  
的某个区间加到
B B B  
的相应位置。
考虑线段树上维护一个
n , n ≥ 2 n, n\ge 2 n , n ≥ 2  
维向量,可能需要构造一些常数加入元素矩阵来支持操作,每一次操作可以看作矩阵乘法,由于矩阵乘法具有结合律,所以这样能够保证支持标记的合并
/CY.
贰月 叁月 一些小到无法单独成文的知识。
排列三维偏序 
可以考虑使用容斥原理转化为二维偏序。
先对序列两两求二维偏序,然后求和,对于任意一个数对
( i , j ) (i, j) ( i , j )  
,合法的三位偏序会被重复计算三次,不合法的三维偏序会被计算一次。最终答案减去
( n 2 ) \dbinom{n}{2} ( 2 n  )  
然后除
2 2 2  
即为所求。
线性基琐记 
一篇探讨线性基本质的文章 
一篇阐述线性基性质的文章 
由于不太了解线性基本质,只能不加证明的阐述一些事实。
线性基有两种构建方式,准确的说,是有两种存在形式。
第一种构造方式:
void  add( LL t){  
     for ( int  i =  _B;  i >=  0 ;  i--){  
         if (!( t &  ( 1 LL  <<  i)))  continue ;  
         if ( v[ i])  t ^=  v[ i];  
         else {  
             for ( int  k =  0 ;  k <  i;  k++)  if ( t &  ( 1 LL  <<  k))  t ^=  v[ k];  
             for ( int  k =  i +  1 ;  k <=  _B;  k++)  if ( v[ k]  &  ( 1 LL  <<  i))  v[ k]  ^=  t;  
             v[ i]  =  t;  
             break ;  
         }  
     }  
}  
第二种构造方式:
void  add( LL t){  
     for ( int  i =  _B;  i >=  0 ;  i--){  
         if (!( t &  ( 1 LL  <<  i)))  continue ;  
         if ( v[ i])  t ^=  v[ i];  
         else {  
             v[ i]  =  t;  
             break ;  
         }  
     }  
}  
区别在于第二种构造方式删除了两行 for
循环,本质上是在插入过程中不在维护
“线性基中存在的位对应的那一列只有一个 1”  的性质。
第一种构建方式使得每一位之间脱离联系,基本是支持了大部分线性基操作,如:
最大值(从高位到低位依次贪心查询异或上这个基能否使得答案变优) 
最小值(就是线性基里面的最小值) 
第
k k k  
大值,将线性基中存在的位依次排开,按照
k k k  
的每个二进制位是否为
1 1 1  
选出一些位,异或起来。 
查询是否能够异或出某个数字
x x x  ,如果
x x x  
的某一位是
1 1 1  
那么就把
x x x  
异或上线性基上的这一位,最后判断
x x x  
是否为
0 0 0  
即可。 
 
第二种构建方式:
最大值的操作相同,可以发现,从查询最大值得角度,这两种线性基的存在形式是本质相同的。
 
最小值操作相同。
 
第
k k k  
大值:由于每一位之间并没有脱离联系,所以无法单独考虑每一位,需要先转化为第一种线性基,然后进行相同的操作。
void  rebuild()  {  
   for ( int  i =  63 ; i >=  0 ; i--)  
       for ( int  j =  i- 1 ; j >=  0 ; j--)  
           if ( p[ i]  &  ( 1 LL  <<  j))   
                 p[ i]  ^=  p[ j];  
}  
但是第二种线性基支持所谓的 离线带删 
。支持查询序列的某个区间的信息。详见题解 
 
 
补充一些显然的小性质:
线性基的结构可能与元素插入顺序有关,但是成功插入的元素数量对于相同的插入集合是唯一的。 
 
一类满足结合律的矩阵乘法 
定义矩阵上运算
∗ * ∗  
,C = A ∗ B C=A*B C = A ∗ B  
满足:
C i , j = max  / min  ( A i , k + B k , j ) 
C_{i, j} = \max/\min{(A_{i, k}+B_{k,j})}
 C i , j  = max / min ( A i , k  + B k , j  )  
可以证明
∗ * ∗  
满足结合律。
关于这类矩阵乘法,单位矩阵 
的定义可以考虑每个运算的单位元是什么。考虑一般意义下的矩阵乘法:
C i , j = ∑ k A i , k × B k , j 
C_{i, j} = \sum_{k} A_{i, k} \times B_{k, j}
 C i , j  = k ∑  A i , k  × B k , j   
和一般意义下的单位矩阵(一个位置为
1 1 1  
当且仅当其在对角线上,其他位置为
0 0 0  )
0 0 0  
是加法运算单位元,
1 1 1  
是乘法运算单位元。
那么显然这里定义的矩阵乘法中,单位矩阵应该类似的定义成:
对角线上为加法单位元
0 0 0  
其他位置为
min  / max  \min /  \max min / max  
单位元
∞ / − ∞ \infty / -\infty ∞/ − ∞  
 
一个小转化 
最小权覆盖 = 全集 − 最大独立集 
\text{最小权覆盖} = \text{全集} - \text{最大独立集}
 最小权覆盖 = 全集 − 最大独立集 
显然成立。
三角矩阵的
O ( n 2 ) \mathcal{O}(n^2) O ( n 2 )  
消元 
每次到达一行
i i i  
时,有用的值只有
M i , i M_{i, i} M i , i   
和
常数项,其他值都已经成零了,只需要用这两个有用值消后面的行即可,每消一行是
O ( 1 ) O(1) O ( 1 )  
的。
一些类似三角阵的矩阵也可以完成快速消元,例如比三角阵稍微大一点点的矩阵。example 
轮廓线 dp 
描述状态为一个类似于轮廓线的东西,类似于状压 dp
,0 0 0  
表示向上走,1 1 1  
表示向右走这样的东西。 和简单博弈结合 
拉格朗日插值 
拉格朗日插值是真的能把多项式函数的系数插出来的。多项式多点插值能用多项式方法做到
O ( n log  n ) \mathcal{O}(n\log n) O ( n log  n )  
,这里只记录
O ( n 2 ) \mathcal{O}(n^2) O ( n 2 )  
的方法。
考虑拉格朗日插值的式子:
f ( x ) = ∑ i = 1 n ∏ j ≠ i ( x − x i ) ( x j − x i ) y j 
f(x) = \sum_{i=1}^{n}\prod_{j \not = i}\frac{(x-x_i)}{(x_j - x_i)}y_j
 f ( x ) = i = 1 ∑ n  j  = i ∏  ( x j  − x i  ) ( x − x i  )  y j   
式子中每一项的分母和
y j y_j y j   
都是常数项,可以平凡的求出。
分子上除掉
y y y  
的剩余部分都和
∏ i ( x − x i ) \prod_i(x-x_i) ∏ i  ( x − x i  )  
差一项,可以先考虑预处理出
∏ i ( x − x i ) \prod_{i}(x-x_i) ∏ i  ( x − x i  )  
,然后在每次处理点值的时候除掉某一项即可。
预处理:考虑乘上一个
( x − x i ) (x - x_i) ( x − x i  )  
多项式会发生 甚么事了 什么变化,相当于前移一位再加上乘
− x i  -x_i − x i    
后的多项式。暴力做即可,这里不会成为复杂度瓶颈。
除掉某一项:可以考虑从低到高依次还原每一项的系数。
如果 dp
为卷积,可以考虑构建一个生成函数后,求点值加速生成函数的卷积运算,最后再用
lagrange 把系数插出来。
不太好写:
struct  LagrangeHelper{  
     int  B0[ _],  B1[ _];  
     #define X  first 
     #define Y  second 
     void  operator  ()  ( pair< int ,  int >  *  pts,  int  n,  int  * ret){  
         for ( int  i =  0 ;  i <  n;  i++)  ret[ i]  =  0 ;  
         for ( int  i =  0 ;  i <  n;  i++)  B0[ i]   =  0 ;  B0[ 0 ]  =  1 ;  
         for ( int  i =  1 ;  i <=  n;  i++){  // \prod{ (x - x_i) }  
             for ( int  j =  n;  j >=  0 ;  j--){  
                 B0[ j]  =  ( B0[ j]  * 1 ll *  ( MOD - pts[ i]. X)  %  MOD +  ( j ==  0  ?  0  :  B0[ j -  1 ]))  %  MOD;  
             }  
         }  
         for ( int  i =  1 ;  i <=  n;  i++){  
             int  d =  pts[ i]. Y;  
             for ( int  j =  1 ;  j <=  n;  j++){   
                 if ( i ==  j)  continue ;  
                 d =  d * 1 ll *  inv( pts[ i]. X -  pts[ j]. X)  %  MOD;  
             }  
             for ( int  j =  0 ;  j <  n;  j++)  B1[ j]  =  B0[ j];  
             for ( int  j =  0 ;  j <  n;  j++)  {  
                 if ( j ==  0 )  B1[ j]  =  B1[ j]  * 1 ll *  inv(- pts[ i]. X)  %  MOD;  
                 else        B1[ j]  =  ( B1[ j]  -  B1[ j -  1 ]  +  MOD)  * 1 ll *  inv(- pts[ i]. X)  %  MOD;  
             }  
             for ( int  j =  0 ;  j <  n;  j++)  ret[ j]  =  ( ret[ j]  +  B1[ j]  * 1 ll *  d %  MOD)  %  MOD;  
         }  
     }  
     #undef X  
     #undef Y  
} d;  
                                     
                                    
                                    
                                                                            
                                        
                                            
                                            
                                                
                                                    
                                                        
                                                        
                                                            🔗 Source Hash: 
                                                            712006c3263759a0a3810fceacabedcba8306f1a2817a7022a57aa4fbe03448c
                                                        
                                                     
                                                
                                             
                                         
                    
                    
                                            
                                                Build Logs 
                                                Build Log - Filtered
================================================
📋 Information:
• Path information has been filtered for privacy protection
• File names are preserved for debugging purposes  
• All build status and error messages are kept intact
🔍 Filter Rules:
• /absolute/path/file.ext → .../file.ext
• /home/username → .../[user]
• /tmp/files → .../[temp]
• /usr/share/packages → .../[system]
================================================
html log:
CMD: ['pandoc', '-s', 'cache/oi-blog_「琐记」壹月 贰月.md', '--filter', 'pandoc-crossref', '--filter', 'pandoc-katex', '--template=cache/pandoc_html_template.html', '-o', 'cache/oi-blog_「琐记」壹月 贰月.md.html', '--metadata', '--verbose', '--highlight-style=tango']
STDOUT: 
STDERR: WARNING: pandoc-crossref was compiled with pandoc 3.6.2 but is being run through 3.6.4. This is not supported. Strange things may (and likely will) happen silently.
====================================================================================================
pdf log:
CMD: ['pandoc', '-s', 'cache.../dbd3207bc6.pdf.md', '-o', 'cache/dbd3207bc6.pdf', '-H', 'static/pandoc.header.tex', '--pdf-engine=xelatex', '--verbose']
STDOUT: 
STDERR: [INFO] Loaded static.../pandoc.header.tex from static.../pandoc.header.tex
[INFO] Not rendering RawBlock (Format "html") ""
[INFO] Not rendering RawBlock (Format "html") ""
[INFO] [makePDF] Temp dir:
  .../[temp]
[INFO] [makePDF] Command line:
  xelatex "-halt-on-error" "-interaction" "nonstopmode" "-output-directory" ".../[temp] ".../[temp]
[INFO] [makePDF] Relevant environment variables:
  ("TEXINPUTS",".../[temp]
  ("TEXMFOUTPUT",".../[temp]
  ("SHELL","/bin/bash")
  ("PWD",".../[user]/projects/blog")
  ("HOME",".../[user]
  ("LANG","zh_CN.UTF-8")
  ("PATH",".../[user]/.local/bin:.../[user]/.cargo/bin:.../[user]/miniconda3/envs/myblog/bin:.../[user]/miniconda3/condabin:.../[temp]
[INFO] [makePDF] Source:
  % Options for packages loaded elsewhere
  \PassOptionsToPackage{unicode}{hyperref}
  \PassOptionsToPackage{hyphens}{url}
  \PassOptionsToPackage{space}{xeCJK}
  \documentclass[
  ]{article}
  \usepackage{xcolor}
  \usepackage[a4paper,margin=2cm]{geometry}
  \usepackage{amsmath,amssymb}
  \setcounter{secnumdepth}{-\maxdimen} % remove section numbering
  \usepackage{iftex}
  \ifPDFTeX
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage{textcomp} % provide euro and other symbols
  \else % if luatex or xetex
    \usepackage{unicode-math} % this also loads fontspec
    \defaultfontfeatures{Scale=MatchLowercase}
    \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
  \fi
  \usepackage{lmodern}
  \ifPDFTeX\else
    % xetex/luatex font selection
    \setmainfont[]{Latin Modern Roman}
    \ifXeTeX
      \usepackage{xeCJK}
      \setCJKmainfont[]{AR PL UKai CN}
    \fi
    \ifLuaTeX
      \usepackage[]{luatexja-fontspec}
      \setmainjfont[]{AR PL UKai CN}
    \fi
  \fi
  % Use upquote if available, for straight quotes in verbatim environments
  \IfFileExists{upquote.sty}{\usepackage{upquote}}{}
  \IfFileExists{microtype.sty}{% use microtype if available
    \usepackage[]{microtype}
    \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
  }{}
  \usepackage{setspace}
  \makeatletter
  \@ifundefined{KOMAClassName}{% if non-KOMA class
    \IfFileExists{parskip.sty}{%
      \usepackage{parskip}
    }{% else
      \setlength{\parindent}{0pt}
      \setlength{\parskip}{6pt plus 2pt minus 1pt}}
  }{% if KOMA class
    \KOMAoptions{parskip=half}}
  \makeatother
  \usepackage{color}
  \usepackage{fancyvrb}
  \newcommand{\VerbBar}{|}
  \newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
  \DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
  % Add ',fontsize=\small' for more characters per line
  \newenvironment{Shaded}{}{}
  \newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
  \newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
  \newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{#1}}
  \newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
  \newcommand{\BuiltInTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{#1}}
  \newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
  \newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{#1}}}
  \newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
  \newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{#1}}
  \newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
  \newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{#1}}
  \newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
  \newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{#1}}}
  \newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
  \newcommand{\ExtensionTok}[1]{#1}
  \newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
  \newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{#1}}
  \newcommand{\ImportTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{\textbf{#1}}}
  \newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
  \newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
  \newcommand{\NormalTok}[1]{#1}
  \newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}}
  \newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{#1}}
  \newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{#1}}
  \newcommand{\RegionMarkerTok}[1]{#1}
  \newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
  \newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{#1}}
  \newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
  \newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{#1}}
  \newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
  \newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
  \ifLuaTeX
    \usepackage{luacolor}
    \usepackage[soul]{lua-ul}
  \else
    \usepackage{soul}
    \ifXeTeX
      % soul's \st doesn't work for CJK:
      \usepackage{xeCJKfntef}
      \renewcommand{\st}[1]{\sout{#1}}
    \fi
  \fi
  \setlength{\emergencystretch}{3em} % prevent overfull lines
  \providecommand{\tightlist}{%
    \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
  % \usepackage{xeCJK}
  % \setCJKmainfont{AR PL UKai CN}
  % \usepackage{unicode-math}
  
  \setmathfont{Latin Modern Math}
  \usepackage{bookmark}
  \IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
  \urlstyle{same}
  \hypersetup{
    pdftitle={「琐记」壹月 贰月 叁月},
    pdfauthor={Jiayi Su (ShuYuMo)},
    hidelinks,
    pdfcreator={LaTeX via pandoc}}
  
  \title{「琐记」壹月 贰月 叁月}
  \author{Jiayi Su (ShuYuMo)}
  \date{2021-01-19 15:35:06}
  
  \begin{document}
  \maketitle
  
  \setstretch{1.3}
  壹月 贰月 叁月 里逛 \texttt{U} 群/水犇犇学到的一些有趣的知识。
  
  \subsection{周贰}\label{ux5468ux8d30}
  
  \subsubsection{一个式子}\label{ux4e00ux4e2aux5f0fux5b50}
  
  \[
  g(n) = \prod_{d|n}f(d)\ \Longleftrightarrow \ f(n)=\prod_{d|n}g(\frac{n}{d})^{\mu(d)}
  \]
  
  取完 \(\ln\) 就是标准的狄利克雷卷积形式,莫比乌斯反演后 exp
  即可,感觉挺有意思/CY.
  
  \subsection{周叁}\label{ux5468ux53c1}
  
  \subsubsection{exCRT 优化}\label{excrt-ux4f18ux5316}
  
  exCRT 的一种姿势,推了推式子,换了一种更好背的式子。 \[
  \begin{cases}
  x \equiv a_1\pmod{p_1}\\\\
  x \equiv a_2\pmod{p_2}
  \end{cases}
  \] 考虑合并以上方程:
  
  \texttt{exgcd(p1,\ p2,\ t1,\ t2)} \((a_2-a_1)|(p_1, p_2)\) 有解 \[
  x \equiv a_1 + \frac{t_1(a_2 - a_1)}{(p_1, p_2)}\times p_1 \pmod{[p1, p2]}
  \]
  
  \href{./「杂题记录」「NOI\%202018」屠龙勇士}{应用}
  
  \subsubsection{快速乘法}\label{ux5febux901fux4e58ux6cd5}
  
  \begin{Shaded}
  \begin{Highlighting}[]
  \KeywordTok{inline}\NormalTok{ ULL mul}\OperatorTok{(}\NormalTok{ULL a}\OperatorTok{,}\NormalTok{ ULL b}\OperatorTok{,}\NormalTok{ ULL MOD}\OperatorTok{)\{} \CommentTok{// unsigned long long  }
  \NormalTok{    LL R }\OperatorTok{=} \OperatorTok{(}\NormalTok{LL}\OperatorTok{)}\NormalTok{a}\OperatorTok{*}\NormalTok{b }\OperatorTok{{-}} \OperatorTok{(}\NormalTok{LL}\OperatorTok{)((}\NormalTok{ULL}\OperatorTok{)((}\DataTypeTok{long} \DataTypeTok{double}\OperatorTok{)}\NormalTok{a }\OperatorTok{*}\NormalTok{ b }\OperatorTok{/}\NormalTok{ MOD}\OperatorTok{)} \OperatorTok{*}\NormalTok{ MOD}\OperatorTok{);}
      \ControlFlowTok{if}\OperatorTok{(}\NormalTok{R }\OperatorTok{\textless{}} \DecValTok{0}\OperatorTok{)}\NormalTok{ R }\OperatorTok{+=}\NormalTok{ MOD}\OperatorTok{;}
      \ControlFlowTok{if}\OperatorTok{(}\NormalTok{R }\OperatorTok{\textgreater{}}\NormalTok{ MOD}\OperatorTok{)}\NormalTok{ R }\OperatorTok{{-}=}\NormalTok{ MOD}\OperatorTok{;}
      \ControlFlowTok{return}\NormalTok{ R}\OperatorTok{;}
  \OperatorTok{\}}
  \CommentTok{// 只关心两个答案的差值,这个差值一定小于 unsigned long long 的最大值, 所以在哪个剩余系下都不重要,不管差值是什么都能还原出原始数值。 }
  \end{Highlighting}
  \end{Shaded}
  
  \subsubsection{卡特兰数}\label{ux5361ux7279ux5170ux6570}
  
  \href{./「琐记」卡特兰数}{单独成文}
  
  \subsubsection{三元环与四元环计数}\label{ux4e09ux5143ux73afux4e0eux56dbux5143ux73afux8ba1ux6570}
  
  \href{https://notes.sshwy.name/Tri-Four-Cycle/}{黄队长博客}
  
  \subsubsection{一类维护两个有影响序列的线段树}\label{ux4e00ux7c7bux7ef4ux62a4ux4e24ux4e2aux6709ux5f71ux54cdux5e8fux5217ux7684ux7ebfux6bb5ux6811}
  
  问题形如,考虑维护两个序列 \(A, B\) 支持对 \(A\)
  做某些修改(区间加、区间乘等),还要求支持将 \(A\) 的某个区间加到 \(B\)
  的相应位置。
  
  考虑线段树上维护一个 \(n, n\ge 2\)
  维向量,可能需要构造一些常数加入元素矩阵来支持操作,每一次操作可以看作矩阵乘法,由于矩阵乘法具有结合律,所以这样能够保证支持标记的合并
  /CY.
  
  贰月 叁月 一些小到无法单独成文的知识。
  
  \subsection{排列三维偏序}\label{ux6392ux5217ux4e09ux7ef4ux504fux5e8f}
  
  可以考虑使用容斥原理转化为二维偏序。
  
  先对序列两两求二维偏序,然后求和,对于任意一个数对 \((i, j)\)
  ,合法的三位偏序会被重复计算三次,不合法的三维偏序会被计算一次。最终答案减去
  \(\dbinom{n}{2}\) 然后除 \(2\) 即为所求。
  
  \subsection{线性基琐记}\label{ux7ebfux6027ux57faux7410ux8bb0}
  
  一篇探讨线性基本质的\href{https://blog.sengxian.com/algorithms/linear-basis}{文章}
  一篇阐述线性基性质的\href{https://blog.csdn.net/a_forever_dream/article/details/83654397}{文章}
  
  由于不太了解线性基本质,只能不加证明的阐述一些事实。
  
  线性基有两种构建方式,准确的说,是有两种存在形式。
  
  第一种构造方式:
  
  \begin{Shaded}
  \begin{Highlighting}[]
  \DataTypeTok{void}\NormalTok{ add}\OperatorTok{(}\NormalTok{LL t}\OperatorTok{)\{}
      \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=}\NormalTok{ \_B}\OperatorTok{;}\NormalTok{ i }\OperatorTok{\textgreater{}=} \DecValTok{0}\OperatorTok{;}\NormalTok{ i}\OperatorTok{{-}{-})\{}
          \ControlFlowTok{if}\OperatorTok{(!(}\NormalTok{t }\OperatorTok{\&} \OperatorTok{(}\DecValTok{1}\BuiltInTok{LL} \OperatorTok{\textless{}\textless{}}\NormalTok{ i}\OperatorTok{)))} \ControlFlowTok{continue}\OperatorTok{;}
          \ControlFlowTok{if}\OperatorTok{(}\NormalTok{v}\OperatorTok{[}\NormalTok{i}\OperatorTok{])}\NormalTok{ t }\OperatorTok{\^{}=}\NormalTok{ v}\OperatorTok{[}\NormalTok{i}\OperatorTok{];}
          \ControlFlowTok{else}\OperatorTok{\{}
              \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ k }\OperatorTok{=} \DecValTok{0}\OperatorTok{;}\NormalTok{ k }\OperatorTok{\textless{}}\NormalTok{ i}\OperatorTok{;}\NormalTok{ k}\OperatorTok{++)} \ControlFlowTok{if}\OperatorTok{(}\NormalTok{t }\OperatorTok{\&} \OperatorTok{(}\DecValTok{1}\BuiltInTok{LL} \OperatorTok{\textless{}\textless{}}\NormalTok{ k}\OperatorTok{))}\NormalTok{ t }\OperatorTok{\^{}=}\NormalTok{ v}\OperatorTok{[}\NormalTok{k}\OperatorTok{];}
              \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ k }\OperatorTok{=}\NormalTok{ i }\OperatorTok{+} \DecValTok{1}\OperatorTok{;}\NormalTok{ k }\OperatorTok{\textless{}=}\NormalTok{ \_B}\OperatorTok{;}\NormalTok{ k}\OperatorTok{++)} \ControlFlowTok{if}\OperatorTok{(}\NormalTok{v}\OperatorTok{[}\NormalTok{k}\OperatorTok{]} \OperatorTok{\&} \OperatorTok{(}\DecValTok{1}\BuiltInTok{LL} \OperatorTok{\textless{}\textless{}}\NormalTok{ i}\OperatorTok{))}\NormalTok{ v}\OperatorTok{[}\NormalTok{k}\OperatorTok{]} \OperatorTok{\^{}=}\NormalTok{ t}\OperatorTok{;}
  \NormalTok{            v}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{=}\NormalTok{ t}\OperatorTok{;}
              \ControlFlowTok{break}\OperatorTok{;}
          \OperatorTok{\}}
      \OperatorTok{\}}
  \OperatorTok{\}}
  \end{Highlighting}
  \end{Shaded}
  
  第二种构造方式:
  
  \begin{Shaded}
  \begin{Highlighting}[]
  \DataTypeTok{void}\NormalTok{ add}\OperatorTok{(}\NormalTok{LL t}\OperatorTok{)\{}
      \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=}\NormalTok{ \_B}\OperatorTok{;}\NormalTok{ i }\OperatorTok{\textgreater{}=} \DecValTok{0}\OperatorTok{;}\NormalTok{ i}\OperatorTok{{-}{-})\{}
          \ControlFlowTok{if}\OperatorTok{(!(}\NormalTok{t }\OperatorTok{\&} \OperatorTok{(}\DecValTok{1}\BuiltInTok{LL} \OperatorTok{\textless{}\textless{}}\NormalTok{ i}\OperatorTok{)))} \ControlFlowTok{continue}\OperatorTok{;}
          \ControlFlowTok{if}\OperatorTok{(}\NormalTok{v}\OperatorTok{[}\NormalTok{i}\OperatorTok{])}\NormalTok{ t }\OperatorTok{\^{}=}\NormalTok{ v}\OperatorTok{[}\NormalTok{i}\OperatorTok{];}
          \ControlFlowTok{else}\OperatorTok{\{}
  \NormalTok{            v}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{=}\NormalTok{ t}\OperatorTok{;}
              \ControlFlowTok{break}\OperatorTok{;}
          \OperatorTok{\}}
      \OperatorTok{\}}
  \OperatorTok{\}}
  \end{Highlighting}
  \end{Shaded}
  
  区别在于第二种构造方式删除了两行 \texttt{for}
  循环,本质上是在插入过程中不在维护
  \textbf{“线性基中存在的位对应的那一列只有一个 1”} 的性质。
  
  第一种构建方式使得每一位之间脱离联系,基本是支持了大部分线性基操作,如:
  
  \begin{itemize}
  \tightlist
  \item
    最大值(从高位到低位依次贪心查询异或上这个基能否使得答案变优)
  \item
    最小值(就是线性基里面的最小值)
  \item
    第 \(k\) 大值,将线性基中存在的位依次排开,按照 \(k\)
    的每个二进制位是否为 \(1\) 选出一些位,异或起来。
  \item
    查询是否能够异或出某个数字 \(x\),如果 \(x\) 的某一位是 \(1\) 那么就把
    \(x\) 异或上线性基上的这一位,最后判断 \(x\) 是否为 \(0\) 即可。
  \end{itemize}
  
  第二种构建方式:
  
  \begin{itemize}
  \item
    最大值的操作相同,可以发现,从查询最大值得角度,这两种线性基的存在形式是本质相同的。
  \item
    最小值操作相同。
  \item
    第 \(k\)
    大值:由于每一位之间并没有脱离联系,所以无法单独考虑每一位,需要先转化为第一种线性基,然后进行相同的操作。
  
  \begin{Shaded}
  \begin{Highlighting}[]
  \DataTypeTok{void}\NormalTok{ rebuild}\OperatorTok{()} \OperatorTok{\{}
    \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=} \DecValTok{63}\OperatorTok{;}\NormalTok{i }\OperatorTok{\textgreater{}=} \DecValTok{0}\OperatorTok{;}\NormalTok{i}\OperatorTok{{-}{-})}
        \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ j }\OperatorTok{=}\NormalTok{ i}\OperatorTok{{-}}\DecValTok{1}\OperatorTok{;}\NormalTok{j }\OperatorTok{\textgreater{}=} \DecValTok{0}\OperatorTok{;}\NormalTok{j}\OperatorTok{{-}{-})}
            \ControlFlowTok{if}\OperatorTok{(}\NormalTok{p}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{\&} \OperatorTok{(}\DecValTok{1}\BuiltInTok{LL} \OperatorTok{\textless{}\textless{}}\NormalTok{ j}\OperatorTok{))} 
  \NormalTok{                p}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{\^{}=}\NormalTok{ p}\OperatorTok{[}\NormalTok{j}\OperatorTok{];}
  \OperatorTok{\}}
  \end{Highlighting}
  \end{Shaded}
  \item
    但是第二种线性基支持所谓的 \textbf{离线带删}
    。支持查询序列的某个区间的信息。详见\href{https://www.luogu.com.cn/problem/solution/CF1100F}{题解}
  \end{itemize}
  
  补充一些显然的小性质:
  
  \begin{itemize}
  \tightlist
  \item
    线性基的结构可能与元素插入顺序有关,但是成功插入的元素数量对于相同的插入集合是唯一的。
  \end{itemize}
  
  \subsection{一类满足结合律的矩阵乘法}\label{ux4e00ux7c7bux6ee1ux8db3ux7ed3ux5408ux5f8bux7684ux77e9ux9635ux4e58ux6cd5}
  
  定义矩阵上运算 \(*\) ,\(C=A*B\) 满足: \[
  C_{i, j} = \max/\min{(A_{i, k}+B_{k,j})}
  \] 可以证明 \(*\) 满足结合律。
  
  关于这类矩阵乘法,\textbf{单位矩阵}
  的定义可以考虑每个运算的单位元是什么。考虑一般意义下的矩阵乘法: \[
  C_{i, j} = \sum_{k} A_{i, k} \times B_{k, j}
  \] 和一般意义下的单位矩阵(一个位置为 \(1\)
  当且仅当其在对角线上,其他位置为 \(0\))
  
  \(0\) 是加法运算单位元, \(1\) 是乘法运算单位元。
  
  那么显然这里定义的矩阵乘法中,单位矩阵应该类似的定义成:
  
  \begin{itemize}
  \tightlist
  \item
    对角线上为加法单位元 \(0\)
  \item
    其他位置为 \(\min /  \max\) 单位元 \(\infty / -\infty\)
  \end{itemize}
  
  \subsection{一个小转化}\label{ux4e00ux4e2aux5c0fux8f6cux5316}
  
  \[
  \text{最小权覆盖} = \text{全集} - \text{最大独立集}
  \]
  
  显然成立。
  
  \subsection{\texorpdfstring{三角矩阵的 \(\mathcal{O}(n^2)\)
  消元}{三角矩阵的 \textbackslash mathcal\{O\}(n\^{}2) 消元}}\label{ux4e09ux89d2ux77e9ux9635ux7684-mathcalon2-ux6d88ux5143}
  
  每次到达一行 \(i\) 时,有用的值只有 \(M_{i, i}\) 和
  常数项,其他值都已经成零了,只需要用这两个有用值消后面的行即可,每消一行是
  \(O(1)\) 的。
  
  一些类似三角阵的矩阵也可以完成快速消元,例如比三角阵稍微大一点点的矩阵。\href{https://www.luogu.com.cn/problem/P4457}{example}
  
  \subsection{轮廓线 dp}\label{ux8f6eux5ed3ux7ebf-dp}
  
  描述状态为一个类似于轮廓线的东西,类似于状压 dp ,\(0\)
  表示向上走,\(1\) 表示向右走这样的东西。
  \href{https://www.luogu.com.cn/problem/P4363}{和简单博弈结合}
  
  \subsection{拉格朗日插值}\label{ux62c9ux683cux6717ux65e5ux63d2ux503c}
  
  拉格朗日插值是真的能把多项式函数的系数插出来的。多项式多点插值能用多项式方法做到
  \(\mathcal{O}(n\log n)\) ,这里只记录 \(\mathcal{O}(n^2)\) 的方法。
  
  考虑拉格朗日插值的式子: \[
  f(x) = \sum_{i=1}^{n}\prod_{j \not = i}\frac{(x-x_i)}{(x_j - x_i)}y_j
  \] 式子中每一项的分母和 \(y_j\) 都是常数项,可以平凡的求出。
  
  分子上除掉 \(y\) 的剩余部分都和 \(\prod_i(x-x_i)\)
  差一项,可以先考虑预处理出 \(\prod_{i}(x-x_i)\)
  ,然后在每次处理点值的时候除掉某一项即可。
  
  预处理:考虑乘上一个 \((x - x_i)\) 多项式会发生 \st{甚么事了}
  什么变化,相当于前移一位再加上乘 \(-x_i\)
  后的多项式。暴力做即可,这里不会成为复杂度瓶颈。
  
  除掉某一项:可以考虑从低到高依次还原每一项的系数。
  
  如果 dp
  为卷积,可以考虑构建一个生成函数后,求点值加速生成函数的卷积运算,最后再用
  lagrange 把系数插出来。
  
  不太好写:
  
  \begin{Shaded}
  \begin{Highlighting}[]
  \KeywordTok{struct}\NormalTok{ LagrangeHelper}\OperatorTok{\{}
      \DataTypeTok{int}\NormalTok{ B0}\OperatorTok{[}\NormalTok{\_}\OperatorTok{],}\NormalTok{ B1}\OperatorTok{[}\NormalTok{\_}\OperatorTok{];}
      \PreprocessorTok{\#define X }\NormalTok{first}
      \PreprocessorTok{\#define Y }\NormalTok{second}
      \DataTypeTok{void} \KeywordTok{operator} \OperatorTok{()} \OperatorTok{(}\NormalTok{pair}\OperatorTok{\textless{}}\DataTypeTok{int}\OperatorTok{,} \DataTypeTok{int}\OperatorTok{\textgreater{}} \OperatorTok{*}\NormalTok{ pts}\OperatorTok{,} \DataTypeTok{int}\NormalTok{ n}\OperatorTok{,} \DataTypeTok{int} \OperatorTok{*}\NormalTok{ret}\OperatorTok{)\{}
          \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=} \DecValTok{0}\OperatorTok{;}\NormalTok{ i }\OperatorTok{\textless{}}\NormalTok{ n}\OperatorTok{;}\NormalTok{ i}\OperatorTok{++)}\NormalTok{ ret}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{=} \DecValTok{0}\OperatorTok{;}
          \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=} \DecValTok{0}\OperatorTok{;}\NormalTok{ i }\OperatorTok{\textless{}}\NormalTok{ n}\OperatorTok{;}\NormalTok{ i}\OperatorTok{++)}\NormalTok{ B0}\OperatorTok{[}\NormalTok{i}\OperatorTok{]}  \OperatorTok{=} \DecValTok{0}\OperatorTok{;}\NormalTok{ B0}\OperatorTok{[}\DecValTok{0}\OperatorTok{]} \OperatorTok{=} \DecValTok{1}\OperatorTok{;}
          \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=} \DecValTok{1}\OperatorTok{;}\NormalTok{ i }\OperatorTok{\textless{}=}\NormalTok{ n}\OperatorTok{;}\NormalTok{ i}\OperatorTok{++)\{} \CommentTok{// \textbackslash{}prod\{ (x {-} x\_i) \}}
              \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ j }\OperatorTok{=}\NormalTok{ n}\OperatorTok{;}\NormalTok{ j }\OperatorTok{\textgreater{}=} \DecValTok{0}\OperatorTok{;}\NormalTok{ j}\OperatorTok{{-}{-})\{}
  \NormalTok{                B0}\OperatorTok{[}\NormalTok{j}\OperatorTok{]} \OperatorTok{=} \OperatorTok{(}\NormalTok{B0}\OperatorTok{[}\NormalTok{j}\OperatorTok{]} \OperatorTok{*}\DecValTok{1}\BuiltInTok{ll}\OperatorTok{*} \OperatorTok{(}\NormalTok{MOD }\OperatorTok{{-}}\NormalTok{pts}\OperatorTok{[}\NormalTok{i}\OperatorTok{].}\NormalTok{X}\OperatorTok{)} \OperatorTok{\%}\NormalTok{ MOD }\OperatorTok{+} \OperatorTok{(}\NormalTok{j }\OperatorTok{==} \DecValTok{0} \OperatorTok{?} \DecValTok{0} \OperatorTok{:}\NormalTok{ B0}\OperatorTok{[}\NormalTok{j }\OperatorTok{{-}} \DecValTok{1}\OperatorTok{]))} \OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{;}
              \OperatorTok{\}}
          \OperatorTok{\}}
          \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=} \DecValTok{1}\OperatorTok{;}\NormalTok{ i }\OperatorTok{\textless{}=}\NormalTok{ n}\OperatorTok{;}\NormalTok{ i}\OperatorTok{++)\{}
              \DataTypeTok{int}\NormalTok{ d }\OperatorTok{=}\NormalTok{ pts}\OperatorTok{[}\NormalTok{i}\OperatorTok{].}\NormalTok{Y}\OperatorTok{;}
              \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ j }\OperatorTok{=} \DecValTok{1}\OperatorTok{;}\NormalTok{ j }\OperatorTok{\textless{}=}\NormalTok{ n}\OperatorTok{;}\NormalTok{ j}\OperatorTok{++)\{} 
                  \ControlFlowTok{if}\OperatorTok{(}\NormalTok{i }\OperatorTok{==}\NormalTok{ j}\OperatorTok{)} \ControlFlowTok{continue}\OperatorTok{;}
  \NormalTok{                d }\OperatorTok{=}\NormalTok{ d }\OperatorTok{*}\DecValTok{1}\BuiltInTok{ll}\OperatorTok{*}\NormalTok{ inv}\OperatorTok{(}\NormalTok{pts}\OperatorTok{[}\NormalTok{i}\OperatorTok{].}\NormalTok{X }\OperatorTok{{-}}\NormalTok{ pts}\OperatorTok{[}\NormalTok{j}\OperatorTok{].}\NormalTok{X}\OperatorTok{)} \OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{;}
              \OperatorTok{\}}
              \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ j }\OperatorTok{=} \DecValTok{0}\OperatorTok{;}\NormalTok{ j }\OperatorTok{\textless{}}\NormalTok{ n}\OperatorTok{;}\NormalTok{ j}\OperatorTok{++)}\NormalTok{ B1}\OperatorTok{[}\NormalTok{j}\OperatorTok{]} \OperatorTok{=}\NormalTok{ B0}\OperatorTok{[}\NormalTok{j}\OperatorTok{];}
              \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ j }\OperatorTok{=} \DecValTok{0}\OperatorTok{;}\NormalTok{ j }\OperatorTok{\textless{}}\NormalTok{ n}\OperatorTok{;}\NormalTok{ j}\OperatorTok{++)} \OperatorTok{\{}
                  \ControlFlowTok{if}\OperatorTok{(}\NormalTok{j }\OperatorTok{==} \DecValTok{0}\OperatorTok{)}\NormalTok{ B1}\OperatorTok{[}\NormalTok{j}\OperatorTok{]} \OperatorTok{=}\NormalTok{ B1}\OperatorTok{[}\NormalTok{j}\OperatorTok{]} \OperatorTok{*}\DecValTok{1}\BuiltInTok{ll}\OperatorTok{*}\NormalTok{ inv}\OperatorTok{({-}}\NormalTok{pts}\OperatorTok{[}\NormalTok{i}\OperatorTok{].}\NormalTok{X}\OperatorTok{)} \OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{;}
                  \ControlFlowTok{else}\NormalTok{       B1}\OperatorTok{[}\NormalTok{j}\OperatorTok{]} \OperatorTok{=} \OperatorTok{(}\NormalTok{B1}\OperatorTok{[}\NormalTok{j}\OperatorTok{]} \OperatorTok{{-}}\NormalTok{ B1}\OperatorTok{[}\NormalTok{j }\OperatorTok{{-}} \DecValTok{1}\OperatorTok{]} \OperatorTok{+}\NormalTok{ MOD}\OperatorTok{)} \OperatorTok{*}\DecValTok{1}\BuiltInTok{ll}\OperatorTok{*}\NormalTok{ inv}\OperatorTok{({-}}\NormalTok{pts}\OperatorTok{[}\NormalTok{i}\OperatorTok{].}\NormalTok{X}\OperatorTok{)} \OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{;}
              \OperatorTok{\}}
              \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ j }\OperatorTok{=} \DecValTok{0}\OperatorTok{;}\NormalTok{ j }\OperatorTok{\textless{}}\NormalTok{ n}\OperatorTok{;}\NormalTok{ j}\OperatorTok{++)}\NormalTok{ ret}\OperatorTok{[}\NormalTok{j}\OperatorTok{]} \OperatorTok{=} \OperatorTok{(}\NormalTok{ret}\OperatorTok{[}\NormalTok{j}\OperatorTok{]} \OperatorTok{+}\NormalTok{ B1}\OperatorTok{[}\NormalTok{j}\OperatorTok{]} \OperatorTok{*}\DecValTok{1}\BuiltInTok{ll}\OperatorTok{*}\NormalTok{ d }\OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{)} \OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{;}
          \OperatorTok{\}}
      \OperatorTok{\}}
      \PreprocessorTok{\#undef X}
      \PreprocessorTok{\#undef Y}
  \OperatorTok{\}}\NormalTok{d}\OperatorTok{;}
  \end{Highlighting}
  \end{Shaded}
  
  
  \end{document}
[INFO] [makePDF] LaTeX run number 1
[INFO] [makePDF] LaTeX output
  This is XeTeX, Version 3.141592653-2.6-0.999995 (TeX Live 2023/Debian) (preloaded format=xelatex)
   restricted \write18 enabled.
  entering extended mode
  (.../input.tex
  LaTeX2e <2023-11-01> patch level 1
  L3 programming layer <2024-01-22>
  (.../article.cls
  Document Class: article 2023/05/17 v1.4n Standard LaTeX document class
  (.../[system]
  (.../xcolor.sty
  (.../color.cfg)
  (.../xetex.def)
  (.../[system]
  (.../geometry.sty
  (.../keyval.sty)
  (.../ifvtex.sty
  (.../iftex.sty)))
  (.../amsmath.sty
  For additional information on amsmath, use the `?' option.
  (.../amstext.sty
  (.../amsgen.sty))
  (.../amsbsy.sty)
  (.../amsopn.sty))
  (.../amssymb.sty
  (.../amsfonts.sty))
  (.../unicode-math.sty
  (.../expl3.sty
  (.../l3backend-xetex.def))
  (.../unicode-math-xetex.sty
  (.../xparse.sty)
  (.../l3keys2e.sty)
  (.../fontspec.sty
  (.../fontspec-xetex.sty
  (.../fontenc.sty)
  (.../fontspec.cfg)))
  (.../fix-cm.sty
  (.../ts1enc.def))
  (.../unicode-math-table.tex)))
  (.../lmodern.sty)
  (.../xeCJK.sty
  (.../ctexhook.sty)
  (.../xtemplate.sty)
  (.../xeCJK.cfg))
  (.../upquote.sty
  (.../textcomp.sty))
  (.../microtype.sty
  (.../etoolbox.sty)
  (.../microtype-xetex.def)
  (.../microtype.cfg))
  (.../setspace.sty)
  (.../parskip.sty
  (.../kvoptions.sty
  (.../ltxcmds.sty)
  (.../kvsetkeys.sty)))
  (.../fancyvrb.sty)
  (.../soul.sty
  (.../soul-ori.sty)
  (.../infwarerr.sty)
  (.../etexcmds.sty))
  (.../xeCJKfntef.sty
  (.../ulem.sty))
  (.../bookmark.sty
  (.../hyperref.sty
  (.../kvdefinekeys.sty)
  (.../pdfescape.sty
  (.../pdftexcmds.sty))
  (.../hycolor.sty)
  (.../auxhook.sty)
  (.../nameref.sty
  (.../refcount.sty)
  (.../gettitlestring.sty))
  (.../pd1enc.def)
  (.../intcalc.sty)
  (.../puenc.def)
  (.../url.sty)
  (.../bitset.sty
  (.../bigintcalc.sty))
  (.../atbegshi-ltx.sty))
  (.../hxetex.def
  (.../stringenc.sty)
  (.../rerunfilecheck.sty
  (.../atveryend-ltx.sty)
  (.../uniquecounter.sty)))
  (.../bkm-dvipdfm.def))
  (.../xurl.sty)
  No file input.aux.
  *geometry* driver: auto-detecting
  *geometry* detected driver: xetex
  (.../mt-LatinModernRoman.cfg)
  
  Package hyperref Warning: Rerun to get /PageLabels entry.
  
  (.../omllmm.fd)
  (.../umsa.fd)
  (.../mt-msa.cfg)
  (.../umsb.fd)
  (.../mt-msb.cfg)
  
  Package xeCJK Warning: Unknown CJK family `\CJKttdefault' is being ignored.
  (xeCJK)                
  (xeCJK)                Try to use `\setCJKmonofont[<...>]{<...>}' to define
  (xeCJK)                it.
  
  
  LaTeX Font Warning: Font shape `TU/ARPLUKaiCN(0)/b/n' undefined
  (Font)              using `TU/ARPLUKaiCN(0)/m/n' instead on input line 127.
  
  
  LaTeX Font Warning: Font shape `TU/ARPLUKaiCN(0)/m/it' undefined
  (Font)              using `TU/ARPLUKaiCN(0)/m/n' instead on input line 165.
  
  [1] [2]
  Missing character: There is no ( (U+FF08) in font LatinModernMath-Regular/OT:sc
  ript=math;language=dflt;!
  Missing character: There is no ) (U+FF09) in font LatinModernMath-Regular/OT:sc
  ript=math;language=dflt;!
  [3] [4] [5] (.../input.aux)
  
  LaTeX Font Warning: Some font shapes were not available, defaults substituted.
  
  
  LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
  
   )
  Output written on .../input.pdf (5 pages).
  Transcript written on .../input.log.
[INFO] [makePDF] Rerun needed
  Package hyperref Warning: Rerun to get /PageLabels entry.
  LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
[INFO] [makePDF] LaTeX run number 2
[INFO] [makePDF] LaTeX output
  This is XeTeX, Version 3.141592653-2.6-0.999995 (TeX Live 2023/Debian) (preloaded format=xelatex)
   restricted \write18 enabled.
  entering extended mode
  (.../input.tex
  LaTeX2e <2023-11-01> patch level 1
  L3 programming layer <2024-01-22>
  (.../article.cls
  Document Class: article 2023/05/17 v1.4n Standard LaTeX document class
  (.../[system]
  (.../xcolor.sty
  (.../color.cfg)
  (.../xetex.def)
  (.../[system]
  (.../geometry.sty
  (.../keyval.sty)
  (.../ifvtex.sty
  (.../iftex.sty)))
  (.../amsmath.sty
  For additional information on amsmath, use the `?' option.
  (.../amstext.sty
  (.../amsgen.sty))
  (.../amsbsy.sty)
  (.../amsopn.sty))
  (.../amssymb.sty
  (.../amsfonts.sty))
  (.../unicode-math.sty
  (.../expl3.sty
  (.../l3backend-xetex.def))
  (.../unicode-math-xetex.sty
  (.../xparse.sty)
  (.../l3keys2e.sty)
  (.../fontspec.sty
  (.../fontspec-xetex.sty
  (.../fontenc.sty)
  (.../fontspec.cfg)))
  (.../fix-cm.sty
  (.../ts1enc.def))
  (.../unicode-math-table.tex)))
  (.../lmodern.sty)
  (.../xeCJK.sty
  (.../ctexhook.sty)
  (.../xtemplate.sty)
  (.../xeCJK.cfg))
  (.../upquote.sty
  (.../textcomp.sty))
  (.../microtype.sty
  (.../etoolbox.sty)
  (.../microtype-xetex.def)
  (.../microtype.cfg))
  (.../setspace.sty)
  (.../parskip.sty
  (.../kvoptions.sty
  (.../ltxcmds.sty)
  (.../kvsetkeys.sty)))
  (.../fancyvrb.sty)
  (.../soul.sty
  (.../soul-ori.sty)
  (.../infwarerr.sty)
  (.../etexcmds.sty))
  (.../xeCJKfntef.sty
  (.../ulem.sty))
  (.../bookmark.sty
  (.../hyperref.sty
  (.../kvdefinekeys.sty)
  (.../pdfescape.sty
  (.../pdftexcmds.sty))
  (.../hycolor.sty)
  (.../auxhook.sty)
  (.../nameref.sty
  (.../refcount.sty)
  (.../gettitlestring.sty))
  (.../pd1enc.def)
  (.../intcalc.sty)
  (.../puenc.def)
  (.../url.sty)
  (.../bitset.sty
  (.../bigintcalc.sty))
  (.../atbegshi-ltx.sty))
  (.../hxetex.def
  (.../stringenc.sty)
  (.../rerunfilecheck.sty
  (.../atveryend-ltx.sty)
  (.../uniquecounter.sty)))
  (.../bkm-dvipdfm.def))
  (.../xurl.sty)
  (.../input.aux)
  *geometry* driver: auto-detecting
  *geometry* detected driver: xetex
  (.../mt-LatinModernRoman.cfg)
  (.../omllmm.fd)
  (.../umsa.fd)
  (.../mt-msa.cfg)
  (.../umsb.fd)
  (.../mt-msb.cfg)
  
  Package xeCJK Warning: Unknown CJK family `\CJKttdefault' is being ignored.
  (xeCJK)                
  (xeCJK)                Try to use `\setCJKmonofont[<...>]{<...>}' to define
  (xeCJK)                it.
  
  
  LaTeX Font Warning: Font shape `TU/ARPLUKaiCN(0)/b/n' undefined
  (Font)              using `TU/ARPLUKaiCN(0)/m/n' instead on input line 127.
  
  
  LaTeX Font Warning: Font shape `TU/ARPLUKaiCN(0)/m/it' undefined
  (Font)              using `TU/ARPLUKaiCN(0)/m/n' instead on input line 165.
  
  [1] [2]
  Missing character: There is no ( (U+FF08) in font LatinModernMath-Regular/OT:sc
  ript=math;language=dflt;!
  Missing character: There is no ) (U+FF09) in font LatinModernMath-Regular/OT:sc
  ript=math;language=dflt;!
  [3] [4] [5] (.../input.aux)
  
  LaTeX Font Warning: Some font shapes were not available, defaults substituted.
  
   )
  Output written on .../input.pdf (5 pages).
  Transcript written on .../input.log.
[WARNING] Missing character: There is no ( (U+FF08) (U+FF08) in font LatinModernMath-Regular/OT:sc
[WARNING] Missing character: There is no ) (U+FF09) (U+FF09) in font LatinModernMath-Regular/OT:sc